import os
import csv
import numpy as np

# ============================================= excel相关 =========================================================
def save_csv(data, file_path):
    with open(file_path, mode='w', newline='') as file:
        writer = csv.writer(file)
        writer.writerows(data)
    # logger.info("数据已成功保存到CSV文件: %s" % (file_path))


def read_csv_to_numpy_array(file_path):
    """
    读取一个.csv文件并将其转换为numpy的二维数组。

    :param file_path: .csv文件的路径
    :return: numpy的二维数组
    """
    try:
        # 使用numpy的loadtxt函数读取csv文件
        data = np.loadtxt(file_path, delimiter=',')  # 使用制表符作为分隔符
        return data
    except Exception as e:
        print(f"读取文件时发生错误: {e}")
        return None


def save_to_csv(data_list, csv_file_path):
    """
    将字典列表保存到CSV文件中。如果文件已存在，则将数据追加到文件末尾。
    :param data_list: 包含字典的列表，每个字典代表一行数据
    :param csv_file_path: CSV文件的保存路径
    """
    if not data_list:
        print("数据列表为空，无法保存到CSV文件。")
        return
    # 检查文件是否存在
    file_exists = os.path.exists(csv_file_path)
    try:
        with open(csv_file_path, mode='a', newline='', encoding='utf-8-sig') as file:
            # 获取表头（字段名）
            fieldnames = data_list[0].keys()
            writer = csv.DictWriter(file, fieldnames=fieldnames)
            # 如果文件不存在，则写入表头
            if not file_exists:
                writer.writeheader()
            # 写入数据
            for row in data_list:
                writer.writerow(row)
        print(f"数据已成功保存到 {csv_file_path}")
    except Exception as e:
        print(f"保存CSV文件时发生错误: {e}")
